home *** CD-ROM | disk | FTP | other *** search
Wrap
package com.extensibility.xml; import com.extensibility.util.Debug; import com.extensibility.util.StringUtilities; import java.io.StringWriter; import java.util.Enumeration; import java.util.Vector; public class DTDMLWriter extends SchemaWriter implements ExportInterface { ElemProxy elemProxy; AttrProxy attrProxy; UnparsedEntityProxy unparsedEntityProxy; NotationProxy notationProxy; ExtSubsetProxy extSubsetProxy; public DTDMLWriter(SchemaIntf var1) { super(var1, var1.getURI()); } public DTDMLWriter(SchemaIntf var1, URI var2) { super(var1, var2); } public String getType(String var1) { if (var1.equals("CDATA")) { return "CData"; } else if (var1.equals("ID")) { return "ID"; } else if (var1.equals("IDREF")) { return "IDRef"; } else if (var1.equals("IDREFS")) { return "IDRefs"; } else if (var1.equals("ENTITY")) { return "Entity"; } else if (var1.equals("ENTITIES")) { return "Entities"; } else if (var1.equals("NMTOKEN")) { return "Nmtoken"; } else if (var1.equals("NMTOKENS")) { return "Nmtokens"; } else if (var1.equals("NOTATION")) { return "Notation"; } else if (var1.equals("")) { return "Enumeration"; } else { Debug.assert(false, String.valueOf("unknown datatype: ").concat(String.valueOf(var1))); return String.valueOf("#UNKNOWN: ").concat(String.valueOf(var1)); } } protected SchemaWriter.DeclWriterProxyIntf createProxy(ElementDeclaration var1) { if (this.elemProxy == null) { this.elemProxy = new ElemProxy(this); } this.elemProxy.setDecl(var1); return this.elemProxy; } protected SchemaWriter.DeclWriterProxyIntf createProxy(AttributeDeclaration var1) { if (this.attrProxy == null) { this.attrProxy = new AttrProxy(this); } this.attrProxy.setDecl(var1); return this.attrProxy; } protected SchemaWriter.DeclWriterProxyIntf createProxy(GeneralEntityDeclaration var1) { if (!(var1 instanceof ExternalGEDeclaration)) { return super.nopProxy; } else { ExternalGEDeclaration var2 = (ExternalGEDeclaration)var1; if (!var2.isUnparsed()) { return super.nopProxy; } else { if (this.unparsedEntityProxy == null) { this.unparsedEntityProxy = new UnparsedEntityProxy(this); } this.unparsedEntityProxy.setDecl(var2); return this.unparsedEntityProxy; } } } protected SchemaWriter.DeclWriterProxyIntf createProxy(NotationDeclaration var1) { if (this.notationProxy == null) { this.notationProxy = new NotationProxy(this); } this.notationProxy.setDecl(var1); return this.notationProxy; } protected SchemaWriter.DeclWriterProxyIntf createProxy(ExternalSubset var1) { if (this.extSubsetProxy == null) { this.extSubsetProxy = new ExtSubsetProxy(this); } this.extSubsetProxy.setDecl(var1); return this.extSubsetProxy; } protected String getExtSubsetsAsGEDecls() { StringBuffer var1 = new StringBuffer(); Enumeration var2 = super.schema.getStructure().children(); String var3 = String.valueOf(System.getProperty("line.separator")).concat(String.valueOf("\t")); while(var2.hasMoreElements()) { ExternalSubset var4 = (ExternalSubset)var2.nextElement(); var1.append(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(var3).concat(String.valueOf("<!ENTITY "))).concat(String.valueOf(((BaseDeclaration)var4).getName()))).concat(String.valueOf(" SYSTEM '"))).concat(String.valueOf(var4.getSystemURI().toSource()))).concat(String.valueOf("'>"))); } var1.append(System.getProperty("line.separator")); return var1.toString(); } private void writeDTDSource(SXE var1) { String var2 = System.getProperty("line.separator"); CommentList var3 = super.schema.getCommentList(super.uri); Object var4 = null; String var6 = super.schema.getEncoding(); if (var6 != null) { var1.writeRawText(this.makeHTMLFriendly(String.valueOf(String.valueOf(String.valueOf(String.valueOf("<?xml encoding='").concat(String.valueOf(var6))).concat(String.valueOf("' ?>"))).concat(String.valueOf(var2))).concat(String.valueOf(var2)))); } var1.writeRawText("<BR>"); if (var3 != null && var3.size() > 0) { var1.writeRawText(this.makeHTMLFriendly(var3.getCommentsAsSource())); } boolean var7 = true; Enumeration var8 = super.schema.getDeclarations(super.uri, true); while(var8.hasMoreElements()) { BaseDeclaration var9 = (BaseDeclaration)var8.nextElement(); if (var7) { if (var9.hasComments()) { var1.writeRawText(this.makeHTMLFriendly((new Comment("")).getSource())); } var7 = false; } if (var9 instanceof ElementDeclaration) { ElementDeclaration var10 = (ElementDeclaration)var9; BaseDeclaration var11 = super.schema.getDeclarationAfter(var9); if (var11 != null && var11 instanceof EntityDeclaration) { AttributeGroup var12 = var10.getAttributeGroup(); Object var13 = null; Vector var17 = var12.getUsesList((Vector)null); if (var17 != null && var17.contains(var11)) { var8.nextElement(); } } } try { StringWriter var15 = new StringWriter(); var9.write(var15); String var16 = this.makeHTMLFriendly(var15.toString()); var1.writeRawText(var16); } catch (Exception var14) { } } } protected void writeHeader(SXE var1) { String var2 = this.getExtSubsetsAsGEDecls(); var1.writeDocTypeWithInternal("DocumentDef", (String)null, var2); var1.writeComment("Generated by XML Authority. DDML version 1.0"); var1.writeElem("DocumentDef"); var1.writeAttr("name", super.schema.getURI().getShortName()); var1.writeLineBreak(); var1.writeAttr("xmlns", "http://www.purl.org/NET/ddml/v1"); var1.writeLineBreak(); var1.writeAttr("xmlns:DDML", "http://www.purl.org/NET/ddml/v1"); var1.writeAttr("Version", "1.0"); var1.writeElem("dtdsource", -1); var1.writeRawText("<![CDATA[\r\n"); this.writeDTDSource(var1); var1.writeRawText("]]>\r\n"); var1.flush("dtdsource"); } protected String makeHTMLFriendly(String var1) { var1 = StringUtilities.replace(var1, "\"", """); var1 = StringUtilities.replace(var1, ">", ">"); var1 = StringUtilities.replace(var1, "<", "<BR><"); var1 = StringUtilities.replace(var1, "\r", ""); var1 = StringUtilities.replace(var1, "\n", ""); var1 = StringUtilities.replace(var1, "\t", ""); return var1; } }